#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct{
    char *ch;
    int len;
}DString;
//初始化
void init(DString *t){
    t->ch=NULL;
    t->len=0;
}
//字符串赋值
void setString(DString *s,const char *ch){
    int len,i; 
    len=strlen(ch);
    //如果s不为空 释放空间
    if(s->ch)
        free(s->ch);
    //判断赋值的内容是否为空 为空则不赋值    
    if(!len){
            s->ch=NULL;
            s->len=0;
    }else{
        s->ch=(char*)malloc(sizeof(char)*(len+1));
            for(i=0;i<len;i++)
                s->ch[i] = ch[i];
            s->len=len;    
        
    }
}
int getlen(DString s){
    return s.len;
}
//找出s1第一个不在s2的字符
int find_first(DString *s1,DString *s2){
    int count=0;
    for(int i=0;i<s1->len;i++)
        for(int j=0;j<s2->len;j++){
            if(s1[i].ch==s2[j].ch){
                count++;
            }
            if(j==s2->len-1&&count==0){
                return i;
            }
            else
                count=0;
        }
        return NULL;
}
//用字母映射表进行加密
void jami(DString *s,char *table){
    int i,len=s->len;
    
    for(i=0;i<len;i++){
        printf("%c",table[s->ch[i]-'a'+1]);
    }
   
}

void jiemi(DString *s,char *table){
    int i,len=s->len;
    int len1 =strlen(table);
    for(i=0;i<len;i++){
        for(int j=1;j<=len1;j++)
            if(table[j]==s->ch[i])
        printf("%c",(j+'a'-1));
    }
}
int main(){
    DString *s1,*s2;
    s1 =(DString *)malloc(sizeof(DString));
    s2 =(DString *)malloc(sizeof(DString));
    init(s1);
    init(s2);
    // char a[10]="jomh";
    // char b[10]="muioh";
    // setString(s1,a);
    // setString(s2,b);
    // int res = find_first(s1,s2);
    // printf("%c",s1->ch[res]);
    char zmb[]="0ngzqtcobmuhelkpdawxfyivrsj";
    char c[]="encrypt";
    char y[]="tkzwsdf";
    setString(s1,c);
    setString(s2,y);
    char *res;
    jami(s1,zmb);
    jiemi(s2,zmb);
    return 0;
}